package ytr.android.sparrow;

import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.preference.EditTextPreference;
import android.preference.ListPreference;
import android.preference.PreferenceActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;

/**
 * 初期情報設定画面。
 * @author toki
 *
 */
public class InitSettingActivity extends PreferenceActivity {

	/**
	 * 初期情報設定有無を保存するためのプリファレンスキー
	 */
	public static final String PREF_KEY_INIT_SETTING = "pref_init_setting";

	/**
	 * 開始時持ち点を保存するためのプリファレンスキー
	 */
	public static final String PREF_KEY_INITIAL_POINT = "PreferenceKey_Initial_Point";

	/**
	 * レートを保存するためのプリファレンスキー
	 */
	public static final String PREF_KEY_RATING = "PreferenceKey_Rating";

	/**
	 * ウマを保存するためのプリファレンスキー
	 */
	public static final String PREF_KEY_UMA = "PreferenceKey_uma";
	
	/**
	 * 端数処理を保存するためのプリファレンスキー
	 */
	public static final String PREF_KEY_FRACTION = "PreferenceKey_fraction";
	
	/**
	 * 初期情報設定有り
	 */
	public static final boolean CONFIGURED = true;
	
	/**
	 * 初期情報設定無し
	 */
	public static final boolean NOT_CONFIGURED = false;
	
	/**
	 * 
	 */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        addPreferencesFromResource(R.layout.pref);
        setSummary();
    }
    
    /**
     * 
     */
    @Override
    public void onResume() {
    	super.onResume();
    	getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(listener);
    }
    
    /**
     * 
     */
    @Override
    public void onPause() {
    	super.onPause();
    	getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(listener);
    }
    
    /**
     * 
     */
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    	MenuInflater inflater = getMenuInflater();
    	inflater.inflate(R.layout.menu_setting, menu);    	
    	return true;
    }
    
    /**
     * 
     */
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    	switch (item.getItemId()) {
    	case R.id.confirm_button :
    		setInitSettingExitFlag();
    		exitInitSettingActivity();
    		break;
   		default:
   			Log.w(getPackageName(), "onOptionsItemSelected Unknown Resource ID");
    	}
    	return true;
    }
    
    private void setInitSettingExitFlag() {
    	SharedPreferences pref = getSharedPreferences(getString(R.string.app_name), MODE_WORLD_WRITEABLE);
    	Editor editor = pref.edit();
    	editor.putBoolean(PREF_KEY_INIT_SETTING, CONFIGURED);
    	editor.commit();
    }
    
    private void exitInitSettingActivity() {
		Intent intent = new Intent(this, ytr.android.sparrow.ScoreManagementActivity.class);
		intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
		startActivity(intent);
    }
    
    /*
     * Summary動的変更用リスナー
     */
    private SharedPreferences.OnSharedPreferenceChangeListener listener = new SharedPreferences.OnSharedPreferenceChangeListener() {

		@Override
		public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
			setSummary();
		}
    };
    
    private void setSummary() {
    	String tmp;
    	
    	EditTextPreference initialPointPreference = (EditTextPreference) getPreferenceScreen().findPreference(PREF_KEY_INITIAL_POINT);
    	tmp = String.format("%s%s%s",
    			getString(R.string.PreferenceSummaryTop_Initial_Point), 
    			initialPointPreference.getText(), 
    			getString(R.string.PreferenceSummaryButtom_Initial_Point));
    	initialPointPreference.setSummary(tmp);
    	
    	EditTextPreference ratingPreference = (EditTextPreference) getPreferenceScreen().findPreference(PREF_KEY_RATING);
    	tmp = String.format("%s%s%s",
    			getString(R.string.PreferenceSummaryTop_Rating), 
    			ratingPreference.getText(), 
    			getString(R.string.PreferenceSummaryButtom_Rating));
    	ratingPreference.setSummary(tmp);
    	
    	ListPreference umaPreference = (ListPreference) getPreferenceScreen().findPreference(PREF_KEY_UMA);
    	tmp = String.format("%s%s%s",
    			getString(R.string.PreferenceSummaryTop_uma), 
    			umaPreference.getValue(), 
    			getString(R.string.PreferenceSummaryButtom_uma));
    	umaPreference.setSummary(tmp);

    	ListPreference fractionPreference = (ListPreference) getPreferenceScreen().findPreference(PREF_KEY_FRACTION);
    	tmp = String.format("%s%s%s",
    			getString(R.string.PreferenceSummaryTop_Fraction), 
    			fractionPreference.getValue(), 
    			getString(R.string.PreferenceSummaryButtom_Fraction));
    	fractionPreference.setSummary(tmp);
    }
}
